package com.silence.gmall.annotation;

import org.springframework.stereotype.Indexed;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @Author silence
 * @Date 2025-10-26 03:07
 * @Email 792245022@qq.com
 * @Version 1.0
 * @Description 缓存注解
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed
public @interface MallCache {

    /**
     * 缓存键
     *
     * @return 缓存键
     */
    String cacheKey() default "";

    /**
     * 分布式锁键
     *
     * @return 分布式锁键
     */
    String lockKey() default "";

    /**
     * 布隆过滤器键
     *
     * @return 布隆过滤器键
     */
    String bloomKey() default "";

    /**
     * 布隆过滤器值
     *
     * @return 布隆过滤器值
     */
    String bloomValue() default "";

    /**
     * 缓存过期时间
     *
     * @return 缓存过期时间
     */
    long timeout() default 7L;

    /**
     * 缓存过期时间单位
     *
     * @return 缓存过期时间单位
     */
    TimeUnit unit() default TimeUnit.DAYS;
}
